package com.answeringplayer.mapper;

import com.answeringplayer.domain.Question;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 题目Mapper接口
 * 对应XML映射文件: QuestionMapper.xml
 */
public interface QuestionMapper {

    /**
     * 根据ID查询题目
     * @param questionId 题目ID
     * @return 题目实体
     */
    Question selectById(Long questionId);

    /**
     * 根据题库ID查询所有题目
     * @param bankId 题库ID
     * @return 题目列表
     */
    List<Question> selectByBankId(Integer bankId);

    /**
     * 分页查询题目
     * @param bankId 题库ID
     * @param questionType 题目类型
     * @param difficulty 难度
     * @param offset 偏移量
     * @param limit 每页数量
     * @return 题目列表
     */
    List<Question> selectPage(
            @Param("bankId") Integer bankId,
            @Param("questionType") String questionType,
            @Param("difficulty") Integer difficulty,
            @Param("offset") Integer offset,
            @Param("limit") Integer limit
    );

    /**
     * 插入题目
     * @param question 题目实体
     * @return 影响行数
     */
    int insert(Question question);

    /**
     * 更新题目
     * @param question 题目实体
     * @return 影响行数
     */
    int update(Question question);

    /**
     * 根据ID删除题目
     * @param questionId 题目ID
     * @return 影响行数
     */
    int deleteById(Long questionId);

    /**
     * 根据题库ID删除题目
     * @param bankId 题库ID
     * @return 影响行数
     */
    int deleteByBankId(Integer bankId);
}